`ifndef RAL_SYS_STATUS
`define RAL_SYS_STATUS

import uvm_pkg::*;

class ral_reg_REG_PRJ_sys_status_base_status extends uvm_reg;
	uvm_reg_field mode;
	uvm_reg_field kernel_size;
	uvm_reg_field stride;

	function new(string name = "REG_PRJ_sys_status_base_status");
		super.new(name, 32,build_coverage(UVM_NO_COVERAGE));
	endfunction: new
   virtual function void build();
      this.mode = uvm_reg_field::type_id::create("mode",,get_full_name());
      this.mode.configure(this, 2, 0, "RO", 1, 2'h0, 1, 0, 0);
      this.kernel_size = uvm_reg_field::type_id::create("kernel_size",,get_full_name());
      this.kernel_size.configure(this, 20, 2, "RO", 1, 20'h0, 1, 0, 0);
      this.stride = uvm_reg_field::type_id::create("stride",,get_full_name());
      this.stride.configure(this, 3, 22, "RO", 1, 3'h1, 1, 0, 0);
   endfunction: build

	`uvm_object_utils(ral_reg_REG_PRJ_sys_status_base_status)

endclass : ral_reg_REG_PRJ_sys_status_base_status


class ral_reg_REG_PRJ_sys_status_blk_status extends uvm_reg;
	uvm_reg_field blk0_status;
	uvm_reg_field blk1_status;
	uvm_reg_field blk2_status;
	uvm_reg_field blk3_status;
	uvm_reg_field blk4_status;

	function new(string name = "REG_PRJ_sys_status_blk_status");
		super.new(name, 32,build_coverage(UVM_NO_COVERAGE));
	endfunction: new
   virtual function void build();
      this.blk0_status = uvm_reg_field::type_id::create("blk0_status",,get_full_name());
      this.blk0_status.configure(this, 1, 0, "RO", 1, 1'h0, 1, 0, 0);
      this.blk1_status = uvm_reg_field::type_id::create("blk1_status",,get_full_name());
      this.blk1_status.configure(this, 1, 1, "RO", 1, 1'h0, 1, 0, 0);
      this.blk2_status = uvm_reg_field::type_id::create("blk2_status",,get_full_name());
      this.blk2_status.configure(this, 1, 2, "RO", 1, 1'h0, 1, 0, 0);
      this.blk3_status = uvm_reg_field::type_id::create("blk3_status",,get_full_name());
      this.blk3_status.configure(this, 1, 3, "RO", 1, 1'h0, 1, 0, 0);
      this.blk4_status = uvm_reg_field::type_id::create("blk4_status",,get_full_name());
      this.blk4_status.configure(this, 1, 4, "RO", 1, 1'h0, 1, 0, 0);
   endfunction: build

	`uvm_object_utils(ral_reg_REG_PRJ_sys_status_blk_status)

endclass : ral_reg_REG_PRJ_sys_status_blk_status


class ral_block_REG_PRJ_sys_status extends uvm_reg_block;
	rand ral_reg_REG_PRJ_sys_status_base_status base_status;
	rand ral_reg_REG_PRJ_sys_status_blk_status blk_status;
	uvm_reg_field base_status_mode;
	uvm_reg_field mode;
	uvm_reg_field base_status_kernel_size;
	uvm_reg_field kernel_size;
	uvm_reg_field base_status_stride;
	uvm_reg_field stride;
	uvm_reg_field blk_status_blk0_status;
	uvm_reg_field blk0_status;
	uvm_reg_field blk_status_blk1_status;
	uvm_reg_field blk1_status;
	uvm_reg_field blk_status_blk2_status;
	uvm_reg_field blk2_status;
	uvm_reg_field blk_status_blk3_status;
	uvm_reg_field blk3_status;
	uvm_reg_field blk_status_blk4_status;
	uvm_reg_field blk4_status;

	function new(string name = "REG_PRJ_sys_status");
		super.new(name, build_coverage(UVM_NO_COVERAGE));
	endfunction: new

   virtual function void build();
      this.default_map = create_map("", 0, 4, UVM_LITTLE_ENDIAN, 0);
      this.base_status = ral_reg_REG_PRJ_sys_status_base_status::type_id::create("base_status",,get_full_name());
      this.base_status.configure(this, null, "");
      this.base_status.build();
      this.default_map.add_reg(this.base_status, `UVM_REG_ADDR_WIDTH'h0, "RO", 0);
		this.base_status_mode = this.base_status.mode;
		this.mode = this.base_status.mode;
		this.base_status_kernel_size = this.base_status.kernel_size;
		this.kernel_size = this.base_status.kernel_size;
		this.base_status_stride = this.base_status.stride;
		this.stride = this.base_status.stride;
      this.blk_status = ral_reg_REG_PRJ_sys_status_blk_status::type_id::create("blk_status",,get_full_name());
      this.blk_status.configure(this, null, "");
      this.blk_status.build();
      this.default_map.add_reg(this.blk_status, `UVM_REG_ADDR_WIDTH'hC, "RO", 0);
		this.blk_status_blk0_status = this.blk_status.blk0_status;
		this.blk0_status = this.blk_status.blk0_status;
		this.blk_status_blk1_status = this.blk_status.blk1_status;
		this.blk1_status = this.blk_status.blk1_status;
		this.blk_status_blk2_status = this.blk_status.blk2_status;
		this.blk2_status = this.blk_status.blk2_status;
		this.blk_status_blk3_status = this.blk_status.blk3_status;
		this.blk3_status = this.blk_status.blk3_status;
		this.blk_status_blk4_status = this.blk_status.blk4_status;
		this.blk4_status = this.blk_status.blk4_status;
   endfunction : build

	`uvm_object_utils(ral_block_REG_PRJ_sys_status)

endclass : ral_block_REG_PRJ_sys_status



`endif
